/**
 * Copyright(C) 2012 Luvina Software Company
 * TblUserDao.java, Aug 24, 2012 Ngo Quang Tinh
 */
package net.luvina.manageuser.dao;
import java.util.List;

import net.luvina.manageuser.dto.UserDetailDto;
import net.luvina.manageuser.hibernate.MstGroup;
import net.luvina.manageuser.hibernate.TblUser;

/**
 * @author Ngo Quang Tinh
 * hàm giao diện tbluserDao
 * Thao tác với database và file hibernate
 */
public interface TblUserDao extends GenericDao<TblUser, Integer> {

    /**
     * Lấy danh sách  user
     * Thực hiện viết câu lệnh SQL join 4 bảng: tbl_user, mst_group, tbl_detail_user_japan, mst_japan để lấy danh sách các user có trong hệ thồng
     * @param offset vị trí data cần lấy nào
     * @param limit số lượng lấy
     * @param groupId mã nhóm search
     * @param fullName full_name search
     * @param sortType : full_name or end_date or code_level
     * @param sortByFullName: ASC or DESC
     * @param sortByCodeLevel: ASC or DESC
     * @param sortByEndDate: ASC or DESC
     * @return List<UserDetailDto> danh sách user
     */

    public List<UserDetailDto> getListUser(final int offset,final  int limit,final  int groupId,final  String fullName,final  String sortType,
            final   String sortByFullName,final  String sortByCodeLevel,final  String sortByEndDate);
    /**
     * Lấy danh sách GROUP
     * @return List<MstGroup>
     */
    public List<MstGroup> getGroupList();

}
